/**
 * Generali Solutions d'assurances - Tous droits réservés &copy; 2007 - 2010
 */

package fr.generali.accueilclient.commun.handler;

import fr.generali.accueilclient.commun.exception.AccueilClientBusinessException;
import fr.generali.accueilclient.commun.request.Request;

/**
 * @author Holmes Kelly
 * @param <S>
 */
public interface IHandler<S> {

    /**
     * @return the successor
     */
    IHandler<S> gethSuccessor();

    /**
     * @param successor set the successor
     */
    void sethSuccessor(IHandler<S> successor);

    /**
     * @param request the request
     * @throws AccueilClientBusinessException exception business
     */
    void handleRequest(Request<S> request) throws AccueilClientBusinessException;
}
